Спортивное программирование — отличная стартовая площадка для карьеры
Разработчики стабильно пользуются спросом, без них не обходится ни одна крупная компания, а труд IT-специалистов ценится высоко. Спортивные программисты ценятся вдвойне — на рынке труда их мало, а решать задачи они умеют быстро и эффективно. Разбираемся, что такое спортивное программирование и как построить карьеру «спортсмена»
Что это вообще такое?
Спортивное программирование — это одна из разновидностей интеллектуальных игр, которая стоит в одном ряду с шахматами или сборкой кубика Рубика на скорость. Цель «спортсмена» — быстро и безошибочно найти решение проблемы, обойдя конкурентов. Обычно программисты работают в команде по три человека, но бывают и одиночные турниры.

Кто-то после побед становится наставником и готовит других чемпионов, а кто-то устраивается в крупные IT-компании. Призёры олимпиад также работают в Google, Facebook, Mail.ru Group, ВКонтакте и Яндексе.
По некоторым оценкам, 5–10% общего числа сотрудников в крупных IT-компаниях — это бывшие участники крупнейших студенческих чемпионатов по программированию ICPC
Чем спортивный программист отличается от обычного?

  • Программист-любитель — это обычный водитель. Он иногда исследует что-то новое и ради интереса помогает другим любителям. Стартовая позиция, с которой все начинают.
  • Промышленный программист, который работает в компании, — это дальнобойщик. Он часто выполняет рутинные задачи и действует по отработанному сценарию. Он не может рисковать, зато обладает полезными компетенциями
  • Спортивный программист — это гонщик. Он начинает с дворовых гонок и доходит до «Формулы 1». Если, конечно, прилагает усилия и развивает необходимые для таких гонок навыки.
Чем занят спортивный программист?

Промышленный программист работает в рамках ТЗ и дедлайнов. Спортивный программист живет немного в другой системе координат. Три ключевых события в его жизни — это сборы, контесты и «дорешка».

На сборах он отрабатывает мастерство и знакомится с будущими конкурентами. Сборы проходят по всему миру — например, Moscow Workshops организует их в городах от Сингапура до Барселоны, а также проводит в Москве четвертьфинал и квалификационный тур студенческого чемпионата для «спортсменов» — ICPC.

На контестах программисты обычно работают в команде из трех человек за одним компьютером. Действовать приходится быстро — в среднем на 10 задач дают не больше пяти часов. Задачи бывают разные. Обычно это гипотетические кейсы, которые нужно решить с помощью алгоритмического моделирования. Например, требуется создать программу, которая рассчитает выручку для парковки. Исходные данные: тарифы, вес автомобилей и порядок, в котором они прибывают и отбывают с парковки. Другой пример: нужно рассчитать, можно ли за один день сфотографировать все достопримечательности в парке, поймав хорошее освещение. Звучит просто, но без глубоких познаний в математике и информатике точный ответ найти не получится.

И, наконец, третий этап — «дорешка», время для анализа и рефлексии. Конкурсанты разбирают задачи, которые не смогли решить на соревнованиях (дорешивают, поэтому такое название), и учатся на ошибках.

А зачем заниматься спортивным программированием?
Спортивные программисты встречаются редко — их примерно 4,5% от общего числа разработчиков в мире, а призеров и того меньше. Поэтому работодатели в них заинтересованы — прямо с чемпионатов участников зовут на собеседования в крупные компании. И большинство ценит навыки независимо от побед: умение быстро решать комплексные задачи, находить нестандартные ответы, работать в команде и пользоваться сложными инструментами. Например, теорией графов, методами динамического программирования и тернарного поиска.

«Именно в ходе таких соревнований нередко обнаруживаются скрытые таланты, настоящие самородки и фанаты своего дела. Спортивное программирование держит голову в тонусе, а победители таких соревнований зачастую могут рассчитывать на внимание и предложения от крутых IT-игроков».

Преимущество спортсменов, кстати, не в языках программирования, потому что в основном это стандартные C/C++, Kotlin, Java и Python, а в мощном математическом умении. Поэтому обычно они занимаются кодовой базой, комплексными системами и алгоритмами. Условно, в компании «спортсмен» вряд ли будет разрабатывать личный кабинет покупателя или систему проставления тегов. Скорее всего, он будет работать над более сложными задачами.

Не стоит забывать и о наградах. На зарплате успехи тоже сказываются. Спортивные программисты востребованы, им проще предъявлять требования к работодателю, в том числе и зарплатные.

Как построить карьеру в этой области?

Спортивная карьера разработчика часто начинается со школьных олимпиад, следующий этап — студенческие чемпионаты и открытые первенства для программистов всех возрастов. Расти можно бесконечно. Пример тому — звезда спортивного программирования Геннадий Короткевич, аспирант ИТМО, который к 26 годам выиграл все крупнейшие соревнования, начиная со студенческого чемпионата мира ICPC и заканчивая кубками Google и Facebook. Он до сих пор иногда участвует в турнирах и стабильно удерживает место в тройке рейтинга Codeforces — это примерно то же, что список Forbes, только при оценке учитывают не капитал, а победы программиста.

Первые турниры по спортивному программированию начали проводить еще в 1970-е годы, но по-настоящему массовым олимпиадное направление стало в 1990-е, благодаря распространению интернета. И сейчас турниры исчисляются сотнями: это и школьные олимпиады — от международной IOI до всероссийской олимпиады школьников и ВКОШП, и студенческий чемпионат мира ICPC, а еще Topcoder Open, Google Code Jam, Hash Code и VK Cup для всех возрастов. В 2020 году в России впервые прошел фестиваль Rucode — это одновременно чемпионат и образовательный проект, в который входит бесплатный онлайн-курс по спортивному программированию.